草庐IT

Android Bluetooth Low Energy 有时会锁定

全部标签

c# - Iterating Over ConcurrentDictionary 只读时,ConcurrentDictionary 是否被锁定?

我在我的网络应用程序中创建了一个ConcurrrentDictionary作为应用程序对象。它在session之间共享。(基本上用作存储库。)有时,任何可用的session都会将新项目添加到字典中。仅允许管理员查看现在,我想允许管理员列出字典中的所有值,但管理员不会添加或删除项目,相反我只会提供一种方式让管理员查看通过遍历项目来读取集合中的项目。(伪)代码看起来像这样:foreach(vareinEmployeeCache.Instance.AllEmployees){Console.WriteLine(e.Key);}我的问题是:如果我遍历项目,ConcurrentDictionar

c# - 锁定对 bool 的访问是必需的还是 Overkill

我有一个主要设计为POCO类的类,有各种线程和任务可以读取它的值,只有其他人只是偶尔更新这些值。这似乎是ReaderWriterLockSlim的理想方案。问题是,在类中,如果需要线程安全的属性,如果属性是bool,是不是有点大材小用了?如果它是一个int会怎样?日期时间?publicclassMyClass{privatebool_theValue=false;privateReaderWriterLockSlim_theValueLock=newReaderWriterLockSlim();publicboolTheValue{get{boolreturnVal=false;try

c# - 锁定文件以进行写入/删除,同时允许任何进程读取

我正在用C#(.NET)开发应用程序,但在处理文件锁定时遇到了问题。我的主应用程序(A)需要对特定文件的读/写权限。一个单独的应用程序(B)需要对同一文件的读取权限。我需要防止用户在我的应用程序(A)运行时编辑或删除文件。应用程序(A)是长期运行的。在(A)运行时不得删除该文件,即使它没有被主动读取或写入也是如此。我完全控制了(A)和(B)的源代码,因此我可以修改其中任何一个。如何在应用程序(A)运行时阻止用户修改/删除文件,同时允许应用程序(A)读/写,应用程序(B)读? 最佳答案 使用FileShare.Read只允许从其他应用

c# - 如何在 Entity Framework 中完全锁定一行

我正在处理我们正在处理货币交易的情况。例如,我有一张用户钱包表,该行中有他们的余额。UserId;WalletId;Balance现在在我们的网站和网络服务中,每次发生特定交易时,我们需要:检查是否有足够的资金来执行该交易:从余额中扣除交易费用。在整个交易期间锁定该行/实体的正确方法是什么?根据我所读到的一些解决方案,其中EF标记一个实体,然后在将其保存回数据库时比较该标记,但是当另一个用户/程序已经编辑了该数量时它会做什么?我可以用EF实现吗?如果不是,我还有什么其他选择?调用存储过程是否允许我正确锁定该行,以便在程序A锁定该行时没有其他人可以访问SQLServer中的该行?

c# - 使用负载平衡时如何锁定对象

背景:我正在使用C#编写一个将持久操作放入队列中的函数,每个操作分为3个步骤:1.数据库操作(更新/删除/添加数据)2.使用web服务进行长时间计算3.数据库操作(保存步骤2的计算结果)对步骤1中的同一个db表,检查db表的一致性,例如步骤1中的items相同(具体例子请看下面)为了避免脏数据或损坏,我使用了一个锁对象(一个静态单例对象)来确保这3个步骤作为一个整体事务来完成。因为当多个用户在调用该函数进行操作时,他们可能会在自己操作的不同步骤修改同一个db表而没有这个锁,例如user2在他的step1中删除了itemA,而user1在检查A是否仍然存在他的第3步。(附加信息:与此同时

c# - 在 Directory.Delete 之后,Directory.Exists 有时会返回 true 吗?

我的行为很奇怪。我有,Directory.Delete(tempFolder,true);if(Directory.Exists(tempFolder)){}有时Directory.Exists返回true。为什么?可能是资源管理器打开了吗? 最佳答案 Directory.Delete调用WindowsAPI函数RemoveDirectory.记录观察到的行为:TheRemoveDirectoryfunctionmarksadirectoryfordeletiononclose.Therefore,thedirectoryisnot

c# - 尝试锁定问题

我有一个问题..如果我有这样的东西可以吗:try{lock(programLock){//somestuff1}}catch(Exceptionex){//stuff2}我很好奇如果"somestuff1"导致异常,programLock是否仍然保持锁定状态? 最佳答案 不会,会释放锁,lock大致相当于这样:try{Monitor.Enter(programLock);//somestuff1}finally{Monitor.Exit(programLock);}(意思是如果抛出异常,Monitor.Exit将在您退出lock语句

c# - 线程完成时通知,不锁定调用线程

我正在开发基于NET3.5构建的遗留应用程序。这是我无法改变的约束。我需要执行第二个线程来运行长时间运行的任务而不锁定UI。当线程完成时,我需要以某种方式执行回调。现在我尝试了这个伪代码:Thread_thread=newThread(myLongRunningTask){IsBackground=True};_tread.Start();//waituntilit'sdone_thread.Join();//executefinalizer不锁定UI的第二个选项如下:Thread_thread=newThread(myLongRunningTask){IsBackground=Tru

c# - 如何通过缓存键锁定?

我正在尝试实现一个通用的线程安全缓存方法,我想知道我应该如何在其中实现锁。它应该看起来像这样://privatestaticreadonlylockObject=newObject();publicTGetCache(stringkey,FuncvalueFactory...){//trytopullfromcacheherelock(lockObject)//Idon'twanttousestaticobjectlockherebecausetheneverytimealockisperformed,allcachedobjectsinmysitehavetowait,regardi

c# - 独占锁定文件然后删除/移动它

我正在用C#实现一个类,该类应该监视一个目录,在文件被删除时处理它们,然后在处理完成后立即删除(或移动)已处理的文件。由于可以有多个线程运行此代码,第一个获取文件并独占锁定它,因此没有其他线程会读取同一个文件并且没有外部进程或用户可以以任何方式访问.我想在文件被删除/移动之前保持锁定状态,这样就不会有另一个线程/进程/用户访问它的风险。到目前为止,我尝试了2个实现选项,但没有一个能如我所愿。选项1FileStreamfs=file.Open(FileMode.Open,FileAccess.Read,FileShare.Delete);//ReadandprocessFile.Dele